function canJump(nums) {
    let maxReach = 0

    for (let i = 0; i < nums.length; i++) {
       // 如果当前下标超过了能到达的最远位置
       if (i > maxReach) {
          return false
       }
       // 更新能到达的最远位置
       maxReach = Math.max(maxReach, i + nums[i])
       // 如果能到达或超过最后一个下标
       if (maxReach >= nums.length - 1) {
          return true
       }
    }

    return false
 }

 // 示例测试
 console.log(canJump([2, 3, 1, 1, 4])) // 输出：true
 console.log(canJump([3, 2, 1, 0, 4])) // 输出：false
 console.log(canJump([0])) // 输出：true (只有一个元素，已经在最后一个下标)
 console.log(canJump([2, 0])) // 输出：true (可以直接到达最后一个下标)
 console.log(canJump([1, 2, 3, 4, 5])) // 输出：true (每步都能跳到最后)